﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cinch;
using System.ComponentModel;
using System.ComponentModel.Composition;

namespace Anata.Client
{
    /// <summary>
    /// Represents a single Image ViewModel
    /// </summary>
    public class CabangProdukThumbnailViewModel : ViewModelBase
    {
        #region Data

        //private ViewMode currentViewMode = ViewMode.AddMode;

        #region Data.Primitives
        private Int32 idCabang;
        private String namaCabang;
        private Int32 idJenisStok;
        private String namaJenisStok;
        private Int32 hargaProduk;
        #endregion

        //private IEnumerable<DataWrapperBase> cachedListOfDataWrappers;

        #region Data.Rules
        #endregion

        #region Data.VMs
        #endregion

        #region Data.Services
        #endregion

        #endregion

        #region Constructor
        public CabangProdukThumbnailViewModel()
        {
            #region Constructor.SetupServices
            #endregion

            #region Constructor.SetupCommands
            #endregion

            #region Constructor.SetupDataWrappers
            #endregion

            //fetch list of all DataWrappers, so they can be used again later without the
            //need for reflection
            //cachedListOfDataWrappers =
            //    DataWrapperHelper.GetWrapperProperties<CabangProdukThumbnailViewModel>(this);

            #region Constructor.SetupValidationRules
            #endregion

            #region Constructor.SetupCollections
            #endregion
        }
        #endregion

        #region Static
        #endregion

        #region Public Properties

        #region Public.Commands
        #endregion

        #region Public.ViewMode
        #endregion

        #region Public.Data
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs idCabangChangeArgs =
            ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.IdCabang);
        public Int32 IdCabang
        {
            get { return idCabang; }
            set
            {
                idCabang = value;
                NotifyPropertyChanged(idCabangChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs namaCabangChangeArgs =
            ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.NamaCabang);
        public String NamaCabang
        {
            get { return namaCabang; }
            set
            {
                namaCabang = value;
                NotifyPropertyChanged(namaCabangChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs idJenisStokChangeArgs =
            ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.IdJenisStok);
        public Int32 IdJenisStok
        {
            get { return idJenisStok; }
            set
            {
                idJenisStok = value;
                NotifyPropertyChanged(idJenisStokChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs namaJenisStokChangeArgs =
            ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.NamaJenisStok);
        public String NamaJenisStok
        {
            get { return namaJenisStok; }
            set
            {
                namaJenisStok = value;
                NotifyPropertyChanged(namaJenisStokChangeArgs);
            }
        }
        /// <summary>
        /// </summary>
        static PropertyChangedEventArgs hargaProdukChangeArgs =
            ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.HargaProduk);
        public Int32 HargaProduk
        {
            get { return hargaProduk; }
            set
            {
                hargaProduk = value;
                NotifyPropertyChanged(hargaProdukChangeArgs);
            }
        }
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs hargaProdukChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.HargaProduk);
        //public Int32 HargaProduk
        //{
        //    get { return hargaProduk; }
        //    set
        //    {
        //        hargaProduk = value;
        //        NotifyPropertyChanged(hargaProdukChangeArgs);
        //    }
        //}
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs jumlahProdukChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.JumlahProduk);
        //public Int32 JumlahProduk
        //{
        //    get { return jumlahProduk; }
        //    set
        //    {
        //        jumlahProduk = value;
        //        NotifyPropertyChanged(jumlahProdukChangeArgs);
        //    }
        //}
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs idKaryawanChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.IdKaryawan);
        //public Int32? IdKaryawan
        //{
        //    get { return idKaryawan; }
        //    set
        //    {
        //        idKaryawan = value;
        //        NotifyPropertyChanged(idKaryawanChangeArgs);
        //    }
        //}
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs namaKaryawanChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.NamaKaryawan);
        //public String NamaKaryawan
        //{
        //    get { return namaKaryawan; }
        //    set
        //    {
        //        namaKaryawan = value;
        //        NotifyPropertyChanged(namaKaryawanChangeArgs);
        //    }
        //}
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs komisiKaryawanChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.KomisiKaryawan);
        //public Int32 KomisiKaryawan
        //{
        //    get { return komisiKaryawan; }
        //    set
        //    {
        //        komisiKaryawan = value;
        //        NotifyPropertyChanged(komisiKaryawanChangeArgs);
        //    }
        //}
        ///// <summary>
        ///// </summary>
        //static PropertyChangedEventArgs potonganHargaChangeArgs =
        //    ObservableHelper.CreateArgs<CabangProdukThumbnailViewModel>(x => x.PotonganHarga);
        //public Int32 PotonganHarga
        //{
        //    get { return potonganHarga; }
        //    set
        //    {
        //        potonganHarga = value;
        //        NotifyPropertyChanged(potonganHargaChangeArgs);
        //    }
        //}
        #endregion

        #region Public.Cached Collection
        #endregion

        #region Public.DataVM
        #endregion

        #region Public.SummaryData
        #endregion

        #endregion

        #region Command Handlers
        #endregion

        #region Change Callbacks
        #endregion

        #region Private Methods
        #endregion

        #region Overrides
        public override string ToString()
        {
            return String.Format("CabangProdukThumbnailViewModel {0}", this.namaJenisStok);
        }
        #endregion

        #region EditableValidatingViewModelBase overrides
        #endregion
    }
}
